﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace PhotoMgr.src.common
{
    public class AutoCompleteComboBox : ExComboBox
    {
        // Biến cờ dùng khi một phím đặc biệt được nhấn
        // (trong trường hợp này, thao tác thay thế text sẽ bị bỏ qua).
        private bool controlKey = false;
        public String myvalue = "";
        private bool m_Unselectable = false;
        //DblPanel pnl = new DblPanel();

        // Xác định xem phím đặc biệt có được nhấn hay không.
        protected override void OnKeyPress(System.Windows.Forms.KeyPressEventArgs e)
        {

            base.OnKeyPress(e);

            if (e.KeyChar == (int)Keys.Escape)
            {
                // Xóa text.
                this.SelectedIndex = -1;
                this.Text = "";
                controlKey = true;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                controlKey = true;
            }
            else
            {
                controlKey = false;
            }

            if (e.KeyChar == (int)Keys.Enter)
            {
                myvalue = this.Text;
            }
        }

        // Thực hiện thay thế text.
        protected override void OnTextChanged(System.EventArgs e)
        {
            base.OnTextChanged(e);

            if (this.Text != "" && !controlKey)
            {
                // Tìm kiếm item trùng khớp.
                string matchText = this.Text;
                int match = this.FindString(matchText);

                // Nếu tìm thấy thì chèn nó vào.
                if (match != -1)
                {
                    this.SelectedIndex = match;
                    // Chọn (bôi đen) phần text vừa thêm vào để
                    // nó có thể được thay thế nếu người dùng kiếp tục gõ.
                    this.SelectionStart = matchText.Length;
                    this.SelectionLength =
                      this.Text.Length - this.SelectionStart;
                }
            }
        }

        //public bool ReadOnly
        //{
        //    get
        //    {
        //        return m_Unselectable;
        //    }
        //    set
        //    {
        //        m_Unselectable = value;
        //        MakeUnselectable(m_Unselectable);
        //    }
        //}

        //private void MakeUnselectable(bool Unselectable)
        //{
        //    if (m_Unselectable == true && this.DropDownStyle != ComboBoxStyle.Simple)
        //    {
        //        pnl.Visible = true;
        //        this.BackColor = System.Drawing.SystemColors.Control;
        //    }
        //    else
        //    {
        //        pnl.Visible = false;
        //        this.BackColor = System.Drawing.SystemColors.Window;
        //    }
        //}

        public void setList(List<String> mylist)
        {
            foreach (var item in mylist)
            {
                this.Items.Add(item);
            }
        }

        public String getValue()
        {
            return this.myvalue;
        }

        //protected class DblPanel : Panel
        //{
        //    protected override void OnPaint(PaintEventArgs e)
        //    {
        //        if (this.Visible == true)
        //        {
        //            ComboBoxRenderer.DrawDropDownButton(e.Graphics, e.ClipRectangle, System.Windows.Forms.VisualStyles.ComboBoxState.Disabled);
        //        }
        //    }
        //}
    }
}
